#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>

#define qtde 65200

typedef struct
{
    char pal[23];
}palavra;
/*programa que separa palavras de tamanhos maiores que 5 em palavras menores*/
int main(void)
{
    FILE * arqIn, *arq1;
    char aux[50],aux2[50],carac;
    palavra vet10[qtde], vet9[qtde],vet8[qtde],vet7[qtde],vet6[qtde];
    int k=0,i=0,j=0,a=0,b=0,c=0,d=0,x=0;

    vet10[0].pal[0]='0';
    vet9[0].pal[0]='0';
    vet8[0].pal[0]='0';
    vet7[0].pal[0]='0';
    vet6[0].pal[0]='0';

/*abre os arquivos pra leitura e escrita*/
    if(!(arqIn = fopen("palavras_tratadas.txt", "r"))){
		printf("Erro ao abrir o arquivo!\n\n");
		return -1;
	}
	if(!(arq1 = fopen("01.txt", "w"))){
		printf("Erro ao abrir o arquivo!\n\n");
		return -1;
	}

/*loop que trata as palavras de tamanho maior que 5*/
	while (!feof(arqIn)){
		fscanf(arqIn, "%s", aux);
		//printf("%s\n",aux);
		if((strlen(aux))%2==0)  //numeros pares
        {
           if((strlen(aux)/2)==10)  //palavras de tamanho 20
           {
               for(i=0;i<10;i++)
               {
                   vet10[k].pal[i] = aux[i];
               }
               j=0;
               for(;i<20;i++)
               {
                   vet10[k+1].pal[j] = aux[i];
                   j=j+1;
               }
               k=k+2;
           }
           else if((strlen(aux)/2)==9)   //palavras de tamanho 18
           {
               for(i=0;i<9;i++)
               {
                   vet9[a].pal[i] = aux[i];
               }
               j=0;
               for(;i<18;i++)
               {
                   vet9[a+1].pal[j] = aux[i];
                   j=j+1;
               }
               a=a+2;
           }
           else if((strlen(aux)/2)==8)   //palavras de tamanho 16
           {
               for(i=0;i<8;i++)
               {
                   vet8[b].pal[i] = aux[i];
               }
               j=0;
               for(;i<16;i++)
               {
                   vet8[b+1].pal[j] = aux[i];
                   j=j+1;
               }
               b=b+2;
           }
           else if((strlen(aux)/2)==7)   //palavras de tamanho 14
           {
               for(i=0;i<7;i++)
               {
                   vet7[c].pal[i] = aux[i];
               }
               j=0;
               for(;i<14;i++)
               {
                   vet7[c+1].pal[j] = aux[i];
                   j=j+1;
               }
               c=c+2;
           }
           else if((strlen(aux)/2)==6)   //palavras de tamanho 12
           {
               for(i=0;i<6;i++)
               {
                   vet6[d].pal[i] = aux[i];
               }
               j=0;
               for(;i<12;i++)
               {
                   vet6[d+1].pal[j] = aux[i];
                   j=j+1;
               }
               d=d+2;
           }
           else if(strlen(aux)==10)  //palavras de tamanho 10
           {
               j=0;
               for(i=0;i<5;i++)
               {
                   aux2[j] = aux[i];
                   j=j+1;
               }
               aux2[j] = '\0';
               fputs(aux2,arq1);
               fprintf(arq1,"\n");
               j=0;
               for(;i<10;i++)
               {
                   aux2[j] = aux[i];
                   j=j+1;
               }
               aux2[j] = '\0';
               fputs(aux2,arq1);
               fprintf(arq1,"\n");
           }
           else if(strlen(aux)==8)  //palavras de tamanho 8
           {
               j=0;
               for(i=0;i<4;i++)
               {
                   aux2[j] = aux[i];
                   j=j+1;
               }
               aux2[j] = '\0';
               fputs(aux2,arq1);
               fprintf(arq1,"\n");
               j=0;
               for(;i<8;i++)
               {
                   aux2[j] = aux[i];
                   j=j+1;
               }
               aux2[j] = '\0';
               fputs(aux2,arq1);
               fprintf(arq1,"\n");
           }
           else if(strlen(aux)==6)  //palavras de tamanho 6
           {
               j=0;
               for(i=0;i<3;i++)
               {
                   aux2[j] = aux[i];
                   j=j+1;
               }
               aux2[j] = '\0';
               fputs(aux2,arq1);
               fprintf(arq1,"\n");
               j=0;
               for(;i<6;i++)
               {
                   aux2[j] = aux[i];
                   j=j+1;
               }
               aux2[j] = '\0';
               fputs(aux2,arq1);
               fprintf(arq1,"\n");
           }
           else if(strlen(aux)==4)  //palavras de tamanho 4
           {
               //strcat (aux,'\n');
               aux[4] = '\0';
               fputs(aux,arq1);
               fprintf(arq1,"\n");
           }
           else if(strlen(aux)==2)  //palavras de tamanho 2
           {
               //strcat (aux,'\n');
               aux[2] = '\0';
               fputs(aux,arq1);
               fprintf(arq1,"\n");
           }

        }
        else   //numeros impares  //n%2+div/2
        {
           if(strlen(aux)==19)  //palavras de tamanho 19
           {
               for(i=0;i<10;i++)
               {
                   vet10[k].pal[i] = aux[i];
               }
               j=0;
               for(;i<19;i++)
               {
                   vet9[a].pal[j] = aux[i];
                   j=j+1;
               }
               k=k+1;
               a=a+1;
           }
           else if(strlen(aux)==17)   //palavras de tamanho 17
           {
               for(i=0;i<9;i++)
               {
                   vet9[a].pal[i] = aux[i];
               }
               j=0;
               for(;i<17;i++)
               {
                   vet8[b].pal[j] = aux[i];
                   j=j+1;
               }
               a=a+1;
               b=b+1;
           }
           else if(strlen(aux)==15)   //palavras de tamanho 15
           {
               for(i=0;i<8;i++)
               {
                   vet8[b].pal[i] = aux[i];
               }
               j=0;
               for(;i<15;i++)
               {
                   vet7[c].pal[j] = aux[i];
                   j=j+1;
               }
               b=b+1;
               c=c+1;
           }
           else if(strlen(aux)==13)   //palavras de tamanho 13
           {
               for(i=0;i<7;i++)
               {
                   vet7[c].pal[i] = aux[i];
               }
               j=0;
               for(;i<13;i++)
               {
                   vet6[d].pal[j] = aux[i];
                   j=j+1;
               }
               c=c+1;
               d=d+1;
           }
           else if(strlen(aux)==11)   //palavras de tamanho 11
           {
               for(i=0;i<6;i++)
               {
                   vet6[d].pal[i] = aux[i];
               }
               j=0;
               for(;i<11;i++)
               {
                   aux2[j] = aux[i];
                   j=j+1;
               }
               aux2[j] = '\0';
               fputs(aux2,arq1);
               fprintf(arq1,"\n");
               d=d+1;
           }
           else if(strlen(aux)==9)  //palavras de tamanho 9
           {
               for(i=0;i<9;i++)
               {
                   vet9[a].pal[i] = aux[i];
               }
               a=a+1;
           }
           else if(strlen(aux)==7)  //palavras de tamanho 7
           {
               for(i=0;i<7;i++)
               {
                   vet7[c].pal[i] = aux[i];
               }
               c=c+1;
           }
           else if(strlen(aux)==5)  //palavras de tamanho 5
           {
               //strcat (aux,'\n');
               aux[5] = '\0';
               fputs(aux,arq1);
               fprintf(arq1,"\n");
           }
           else if(strlen(aux)==3)  //palavras de tamanho 3
           {
               //strcat (aux,'\n');
               aux[3] = '\0';
               fputs(aux,arq1);
               fprintf(arq1,"\n");
           }
        }
	}
	/*insere as palavras separadas no arquivo 01.txt*/
    if(vet10[0].pal[0]!='0'){
        for(i=0;i<k;i++)       //vet10
        {
            for(j=0;j<5;j++)
            {
                aux2[j]=vet10[i].pal[j];
            }
            //strcat (aux2,'\n');
            aux2[j] = '\0';
            fputs(aux2,arq1);
            fprintf(arq1,"\n");
            x=0;
            for(;j<10;j++)
            {
                aux2[x]=vet10[i].pal[j];
                x++;
            }
            //strcat (aux2,'\n');
            aux2[x] = '\0';
            fputs(aux2,arq1);
            fprintf(arq1,"\n");
        }
    }
    if(vet9[0].pal[0]!='0'){
        for(i=0;i<a;i++)        //vet9
        {
            for(j=0;j<5;j++)
            {
                aux2[j]=vet9[i].pal[j];
            }
            //strcat (aux2,'\n');
            aux2[j] = '\0';
            fputs(aux2,arq1);
            fprintf(arq1,"\n");
            x=0;
            for(;j<9;j++)
            {
                aux2[x]=vet9[i].pal[j];
                x++;
            }
            //strcat (aux2,'\n');
            aux2[x] = '\0';
            fputs(aux2,arq1);
            fprintf(arq1,"\n");
        }
    }
    if(vet8[0].pal[0]!='0'){
        for(i=0;i<b;i++)        //vet8
        {
            for(j=0;j<4;j++)
            {
                aux2[j]=vet8[i].pal[j];
            }
            //strcat (aux2,'\n');
            aux2[j] = '\0';
            fputs(aux2,arq1);
            fprintf(arq1,"\n");
            x=0;
            for(;j<8;j++)
            {
                aux2[x]=vet8[i].pal[j];
                x++;
            }
            //strcat (aux2,'\n');
            aux2[x] = '\0';
            fputs(aux2,arq1);
            fprintf(arq1,"\n");
        }
    }
    if(vet7[0].pal[0]!='0'){
        for(i=0;i<c;i++)        //vet7
        {
            for(j=0;j<4;j++)
            {
                aux2[j]=vet7[i].pal[j];
            }
            //strcat (aux2,'\n');
            aux2[j] = '\0';
            fputs(aux2,arq1);
            fprintf(arq1,"\n");
            x=0;
            for(;j<7;j++)
            {
                aux2[x]=vet7[i].pal[j];
                x++;
            }
            //strcat (aux2,'\n');
            aux2[x] = '\0';
            fputs(aux2,arq1);
            fprintf(arq1,"\n");
        }
    }
    if(vet6[0].pal[0]!='0'){
        for(i=0;i<d;i++)        //vet6
        {
            for(j=0;j<3;j++)
            {
                aux2[j]=vet6[i].pal[j];
            }
            //strcat (aux2,'\n');
            aux2[j] = '\0';
            fputs(aux2,arq1);
            fprintf(arq1,"\n");
            x=0;
            for(;j<6;j++)
            {
                aux2[x]=vet6[i].pal[j];
                x++;
            }
            //strcat (aux2,'\n');
            aux2[x] = '\0';
            fputs(aux2,arq1);
            fprintf(arq1,"\n");
        }
    }
    /*fecha todos os arquivos abertos*/
	fclose(arqIn);
	fclose(arq1);

	printf("operacao realizada com sucesso!!");
	return 0;
}
